void main(List<String> args) {
  // 列表
  List<String> list = ['张三', '李四', '王五', '张三', '李', '王', '张'];
  print(list);
  // 列表的长度
  print(list.length);
  // 列表的索引
  print(list[0]);
  // 列表的添加
  list.add('赵六');
  print(list);
  // 列表的删除
  list.remove('张三');
  print(list);
  // 根据索引删除
  list.removeAt(0);
  print(list);
  // 删除最后一个
  list.removeLast();
  print(list);
  // 删除索引范围内的数据
  list.removeRange(0, 2);
  print(list);
  // 列表的清空
  // list.clear();
  // print(list);

  // 筛选
  List<String> list2 = list.where((item) => item == '李四').toList();
  print(list2);


  // 遍历1
  for (var i = 0; i < list.length; i++) {
    print(list[i]);
  }
  // 遍历2
  for (var item in list) {
    print(item);
  }
  // 遍历3
  list.forEach((item) {
    print(item);
  });

  // 箭头函数只有一行逻辑的时候才可以写箭头函数 不能省略参数的括号
  list.forEach((item) => print(item));

  // 是否都满足条件
  bool isAll = list.every((item) => item.length > 1);
  print(isAll);

  // 是否有满足条件的
  bool isHas = list.any((item) => item.length > 1);
  print(isHas);

  // 最后一个元素
  list.last;
  print(list.last);

  // 第一个元素
  list.first;
  print(list.first);

  // 是否为空
  bool isEmpty = list.isEmpty;
  print(isEmpty);

  // 累加 fold
  // 格式：list.fold(初始值, (上一次的结果, 当前元素) => 新的结果);
  // 说明：上一次的结果是初始值，当前元素是列表中的每个元素，新的结果是上一次的结果和当前元素的累加结果
  List<int> list1 = [1, 2, 3, 4, 5];
  int sum = list1.fold(0, (pre, cur) => pre + cur);
  print(sum);

}